# 作业：
# 一、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
# 类方法：
#  1 获取学生的姓名：get_name() 返回类型:str
# 2 获取学生的年龄：get_age() 返回类型:int
# 3 返回3门科目中最高的分数。get_course() 返回类型:int
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
# 5 获取所有学生的信息
# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])

"""class Student:
    def __init__(self,name,age,score):
        self.name = name
        self.age = age
        self.score = score
    def get_name(self)->str:
        return self.name
    def get_age(self)->int:
        return self.age
    def get_score(self):
        return self.score
    def get_course(self)->int:
        return max(self.score.values())
    def all(self):
        return self.name,self.age,self.score
if __name__ == '__main__':
    cj = {'chinese':69,'math':88,'english':100}
    zm = Student('zhangming',20,cj)
# print(zm.__dict__)
print(f"姓名:{zm.get_name()}")
print(f"所有信息:{zm.all()}")
print(f"最好成绩:{zm.get_course()}")
print(f"成绩:{zm.get_score()}")"""

"""
class Student:
    def __init__(self,name,age,score:list):
        self.name = name
        self.age = age
        self.score = score
        str1 = "{'姓名':%s,'年龄':%s,'成绩':{'语文':%s,'数学':%s,'英语':%s}}\n" % (
            self.name,self.age,self.score[0],self.score[1],self.score[2]
        )
        with open('student.txt','r',encoding='utf-8') as f:
            all = f.readlines()
        if str1 not in all:
            with open('student.txt','a',encoding='utf-8') as f:
                f.write(str1)
    def get_name(self):
        return self.name
    def get_age(self):
        return self.age
    def get_course(self):
        max_score = self.score[0]
        for i in self.score:
            if i > max_score:
                max_score = i
        return f'返回3门科目中最高分的分数是:{max_score}'
    def get_all_studentInfo(self):
        with open('student.txt','r',encoding='utf-8') as f:
            all_data = f.readlines()
        for i,k in enumerate(all_data):
            print(f'第{i+1}个学生姓名为:{k}')
if __name__ == '__main__':
    s1 = Student('张三',19,[98,99,103])
    s2 = Student('李四',99,[109, 89, 77])
print(s1.get_name())
print(s1.get_age())
print(s1.get_course())
s1.get_all_studentInfo()
"""

# 二、定义一个字典类：dictclass。完成下面的功能：
# 1 删除某个key
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
# 3 返回键组成的列表：返回类型;(list)
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)\
"""
class Dictclass:
    def __init__(self,dict_obj:dict):
        self.dict_obj = dict_obj
    def del_key(self,key):
        if key in self.dict_obj:
            del self.dict_obj[key]
            return f"删除:{key}成功!"
        else:
            return f"not found"
    def key_list(self):
        return list(self.dict_obj.keys())
    def updata_dict(self,dict1):
        self.dict_obj.update(dict1)
        return list(self.dict_obj.values())
if __name__ == '__main__':
    d1 = Dictclass({"姓名":"张三",'年龄':19})
print(d1.del_key('姓名'))
print(d1.key_list())
print(d1.updata_dict({"地址":"沈阳"}))
print(d1.updata_dict({"address":"shenyang"}))
print(d1.__dict__)
"""

# 三、定义一个列表的操作类：Listinfo
# 包括的方法:
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# 2 列表元素取值：get_key(num) [num:整数类型]
# 3 列表合并：update_list(list) [list:列表类型]
# 4 删除并且返回最后一个元素：del_key()
"""
class Listinfo:
    def __init__(self,list1:list):
        self.list1 = list1
    def add_key(self,keyname):
        self.list1.append(keyname)
        print("添加成功")
    def get_key(self,num:int):
        try:
            return self.list1[num-1]
        except:
            return f"要查看的元素不在"
    def updata_list(self,list2):
        self.list1.extend(list2)
        return self.list1
    def del_key(self):
        result = self.list1.pop(len(self.list1)-1)
        return result
if __name__ == '__main__':
    l1 = Listinfo([11,22,33,55,66])
    l1.add_key(99)
    print(l1.__dict__)
    print(l1.get_key(3))
    print(l1.updata_list([55,66]))
    print(l1.del_key())
"""

# 四、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
class StudentSystem:
    def insert_student(self,name,age,address,phone):
        str1 = f"学生姓名为:{name},年龄:{age},地址:{address},手机号码:{phone}" + "\n"
        with open('student.txt','r',)
            all = f.readlines()
        if str1 not in all:





# 五、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品
# 2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
# 菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；
# 六、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，
# 包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，为其赋予不同的属性值，
# 并调用showInfo方法，输出每个桌子的信息。
# 七、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
"""
class User:
    def __init__(self,username,password):
        self.username = username
        self.password = password
    def get_username(self):
        return self.username
    def get_password(self):
        return self.password
if __name__ == '__main__':
    user1 = User("admin","123456")
print(f"账号是:{user1.get_username()}")
print(f"密码是:{user1.get_password()}")
"""
# 八、定义一个计算器类，有加减乘除四个方法
"""
class Calculator:
    def __init__(self,num1,num2):
        self.num1 = num1
        self.num2 = num2
    def jia(self):
        return self.num1+self.num2
    def jian(self):
        return self.num1-self.num2
    def cheng(self):
        return self.num1*self.num2
    def chu(self):
        if self.num2 == 0:
            raise ValueError("除数不可以为0")
        return self.num1/self.num2
if __name__ == '__main__':
    p1 = Calculator(1,2)
    print(f"加法结果为:{p1.jia()}")
    print(f"减法结果为:{p1.jian()}")
    print(f"乘法结果为:{p1.cheng()}")
    print(f"除法结果为:{p1.chu()}")
"""
# 九、创建一个名为Person的类，具有以下属性和方法：
# 属性：name（姓名），age（年龄）
# 方法：greet()，打印出一句问候语，包括该人的姓名和年龄
"""
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    # def get_name(self):
    #     return self.name
    # def get_age(self):
    #     return self.age
    def greet(self):
        print(f"你好,我是{self.name},今年{self.age}")
if __name__ == '__main__':
    p1 = Person("jqd",25)
    p1.greet()
"""
# 十、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询，精确查询，需要用户传入形参来控制返回结果
# 十一、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。
# 创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。
# 创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# 十二、淘宝商家后台，可以上架商品、下架商品，功能如下：
#  （1） 可以添加商品，商家添加完的商品会存到商品列表
#  1.1  商品要有名称、sku、价格
#  （2） 可以修改商品信息：名称、sku、价格
#  （3） 可以对商品进行下架，下架后的商品不再展示
# 十三、定义一个人类
# 1.小明和小美都爱跑步
# 2.小美体重45.0公斤
# 3.小明体重75.0公斤
# 4.每次跑步都会减少0.5公斤
# 5.每次吃东西都会增加1公斤
# 十四、士兵瑞恩有一把ak47
# 士兵可以开火（开火扣动的是扳机）
# 枪能够发射子弹（把子弹打出去）
# 抢能够装子弹–增加子弹数量
# 要求没子弹，需要输出没有子弹了，且发射失败